/**
 * <p>Copyright:Copyright(c) 2019</p>
 * <p>Company:Professional</p>
 * <p>Package:com.cesgroup.zw.spring.boot.echarts.component.series</p>
 * <p>File:Map.java</p>
 * <p>类更新历史信息</p>
 * @todo chanlong(陈龙) 创建于 Jun 4, 2019 11:06:36 AM
 */
package com.cesgroup.zw.spring.boot.echarts.component.series;

import java.math.BigDecimal;

import com.cesgroup.zw.spring.boot.echarts.component.series.parent.DatasetSeries;
import com.cesgroup.zw.spring.boot.echarts.enums.Calculation;
import com.cesgroup.zw.spring.boot.echarts.enums.SelectedMode;
import com.cesgroup.zw.spring.boot.echarts.model.series.Scale;
import com.cesgroup.zw.spring.boot.supports.util.math.BigDecimalUtil;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>描述: 地图</p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date Jun 4, 2019 11:06:36 AM
 * @version 1.0.2019
 */
@Data @SuppressWarnings("serial")
@EqualsAndHashCode(callSuper = true)
public class Map extends DatasetSeries {
	
	/** 指定geo组件，[default: null] */
	private Integer geoIndex;

	/** 地图类型，[default: ''] */
	private String map;
	
	/** 是否开启鼠标缩放和平移漫游，[default: false] */
	private Boolean roam;
	
	/** 当前视角的中心点，用经纬度表示 */
	private BigDecimal[] center;
	
	/** 地图缩放比，[default: 0.75] */
	private BigDecimal aspectScale;
	
	/** 二维数组，定义定位的左上角以及右下角分别所对应的经纬度，[default: 0.75] */
	private BigDecimal[][] boundingCoords;
	
	/** 当前视角的缩放比例，[default: 1] */
	private BigDecimal zoom;
	
	/** 滚轮缩放的极限控制，通过min, max最小和最大的缩放值，默认的缩放为1 */
	private Scale scaleLimit;
	
	/** 自定义地区的名称映射 */
	private java.util.Map<String, String> nameMap;
	
	/** 选中模式，表示是否支持多个选中 */
	private SelectedMode selectedMode;
	
	/** tree组件离容器上侧的距离，[default: 'middle'] */
	private Object top;
	
	/** tree组件离容器左侧的距离，[default: 'left'] */
	private Object left;
	
	/** tree组件离容器右侧的距离，[default: 'right'] */
	private Object right;
	
	/** tree组件离容器下侧的距离，[default: 'bottom'] */
	private Object bottom;
	
	/** 额外布局控制 */
	private String[] layoutCenter;
	
	/** 额外布局控制 */
	private Integer layoutSize;
	
	/** 多个拥有相同地图类型的系列会使用同一个地图展现，如果多个系列都在同一个区域有值，ECharts 会对这些值统计得到一个数据。这个配置项就是用于配置统计的方式 */
	private Calculation mapValueCalculation;
	
	/** 在图例相应区域显示图例的颜色标识（系列标识的小圆点），存在 legend 组件时生效 */
	private Boolean showLegendSymbol;
	
	public void setCenter(double lng, double lat) {
		this.center = new BigDecimal[] { new BigDecimal(lng), new BigDecimal(lng) };
	}
	
	public void setAspectScale(double scale) {
		this.aspectScale = BigDecimalUtil.valueOf(scale);
	}
	
	public void setBoundingCoords(double[] lt, double[] rb) {
		this.boundingCoords = new BigDecimal[][] { BigDecimalUtil.valueOf(lt), BigDecimalUtil.valueOf(rb), };
	}
	
	public void setZoom(int zoom) {
		this.zoom = BigDecimalUtil.valueOf(zoom);
	}
	
	public void setZoom(double zoom) {
		this.zoom = BigDecimalUtil.valueOf(zoom);
	}
	
	public Map() {
		this.setType("map");
	}
}
